﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;

namespace MDF.Utilites.Helper
{
    public static class StringHelper
    {
        /// <summary>
        /// Tạo chuỗi chữ đầu viết hoa
        /// </summary>
        /// <param name="_str">Chuỗi cần định dạng</param>
        /// <returns>Chuỗi đã định dạng</returns>
        public static string ToTitleCase(string _str)
        {
            var ti = System.Globalization.CultureInfo.CurrentCulture.TextInfo;
            return ti.ToTitleCase(ti.ToLower(_str));
        }
        /// <summary>
        /// Tạo chuỗi chữ không dấu
        /// </summary>
        /// <param name="_strUnicodeString">Chuỗi cần định dạng</param>
        /// <returns>Chuỗi đã định dạng</returns>
        public static string ToNonUnicode(string _strUnicodeString)
        {
            string text = _strUnicodeString;
            for (int i = 33; i < 48; i++)
            {
                text = text.Replace(((char)i).ToString(), "");
            }

            for (int i = 58; i < 65; i++)
            {
                text = text.Replace(((char)i).ToString(), "");
            }

            for (int i = 91; i < 97; i++)
            {
                text = text.Replace(((char)i).ToString(), "");
            }

            for (int i = 123; i < 127; i++)
            {
                text = text.Replace(((char)i).ToString(), "");
            }

            //text = text.Replace(" ", "-");

            Regex regex = new Regex(@"\p{IsCombiningDiacriticalMarks}+");

            string strFormD = text.Normalize(System.Text.NormalizationForm.FormD);

            return regex.Replace(strFormD, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D');

        }
        /// <summary>
        /// Tạo chuỗi chữ không dấu và chữ thường
        /// </summary>
        /// <param name="_strUnicodeString">Chuỗi cần định dạng</param>
        /// <returns>Chuỗi đã định dạng</returns>
        public static string ToNonUnicodeAndLower(string _str)
        {
            return ToNonUnicode(_str).ToLower();
        }

        public static string ToUrl( string title, object id)
        {
            while (title.IndexOf("  ") > -1)
            {
                title = title.Replace("  ", " ");
            }
            return ToNonUnicodeAndLower(title).Replace(" ","-") + "-" + id.ToString();
        }

        public static string CutString( string content, int len)
        {
            return content.Length > len ? content.Substring(0, len) + "..." : content;
        }
    }
}